------------------------------------------------------------------------
  割り込み制御ライブラリ
  割り込み初期化や割り込み登録ルーチンが入っています。
  基本的にＨｕＣ６２７２のラスター割り込みルーチンです。
  それぞれのデバイスを以下の略称で呼びます。
  ＨｕＣ６２７０ ７ｕｐ
  ＨｕＣ６２７２ ＫＩＮＧ
------------------------------------------------------------------------
割り込みの初期化

#include <intlib.h>

void IrqInit(void)

パラメータ
        なし

戻り値
        なし

備考
        intlibを使うのに必要な初期化をする。
        全ての割り込み要求をマスクし、ダミーハンドラを登録。
        また、各デバイスの割り込みレベルを設定する。
        この関数を実行した後は割り込み禁止となる。

変更されるグローバル変数
        vfunc_t __vIrqVector[]
                ダミーハンドラへのポインタ

参照するグローバル変数
        なし

------------------------------------------------------------------------
割り込みハンドラへのルーチンの登録

#include <intlib.h>

void IrqSet(void *kpHandler, char cDevNumber)
void *lpHandler;                /* 登録する割り込みルーチン */
char cDevNumber;                /* デバイス番号 */

パラメータ
        void *lpHandler
                登録したい割り込みルーチン(void interrupt型)へのポインタ
        
        char cDevNumber
                登録したいデバイスの番号
                        XINT_TIM        タイマー割り込み
                        XINT_EX         拡張割り込み
                        XINT_KP         Ｋポート割り込み
                        XINT_7A         ７ｕｐＡ割り込み
                        XINT_72         ＫＩＮＧ割り込み
                        XINT_7B         ７ｕｐＢ割り込み
                        XINT_SIO        ＳＩＯ割り込み

戻り値
        なし
        
備考
        指定した割り込みハンドラに指定したルーチンを登録する。

変更するグローバル変数
        vfunc_t __vIrqVector[cDevNumber]
                変更後の割り込みルーチンへのポインタ

参照するグローバル変数
        なし

------------------------------------------------------------------------
現在の割り込みハンドラに登録されているルーチンのアドレスを得る

vfunc_t IrqGet(char cDevNumber)
char cDevNumber;                /* 調べたい割り込みのデバイス番号 */

パラメータ
        char cDevNumber
                デバイス番号
                        XINT_TIM        タイマー割り込み
                        XINT_EX         拡張割り込み
                        XINT_KP         Ｋポート割り込み
                        XINT_7A         ７ｕｐＡ割り込み
                        XINT_72         ＫＩＮＧ割り込み
                        XINT_7B         ７ｕｐＢ割り込み
                        XINT_SIO        ＳＩＯ割り込み

戻り値
        登録されているハンドラのポインタ

備考
        指定した割り込みハンドラに登録されているルーチンのアドレスを返す。

変更するグローバル変数
        なし

参照するグローバル変数
        vfunc_t __vIrqVector[]
                情報取得用

------------------------------------------------------------------------
割り込みハンドラに登録されているルーチンをアクティブにする

void IrqOn(char cDevNumber)
char cDevNumber;               /* 割り込みをアクティブにしたいデバイスの番号 */

パラメータ
        char cDevNumber
                デバイス番号
                        XINT_TIM        タイマー割り込み
                        XINT_EX         拡張割り込み
                        XINT_KP         Ｋポート割り込み
                        XINT_7A         ７ｕｐＡ割り込み
                        XINT_72         ＫＩＮＧ割り込み
                        XINT_7B         ７ｕｐＢ割り込み
                        XINT_SIO        ＳＩＯ割り込み

戻り値
        なし

備考
        指定デバイスの割り込みハンドラをアクティブにする

変更するグローバル変数
        なし

参照するグローバル変数
        なし

------------------------------------------------------------------------
割り込みハンドラに登録されているルーチンを非アクティブにする

void IrqOff(char cDevNumber)
char cDevNumber;             /* 割り込みを非アクティブにしたいデバイスの番号 */

パラメータ
        char cDevNumber
                デバイス番号
                        XINT_TIM        タイマー割り込み
                        XINT_EX         拡張割り込み
                        XINT_KP         Ｋポート割り込み
                        XINT_7A         ７ｕｐＡ割り込み
                        XINT_72         ＫＩＮＧ割り込み
                        XINT_7B         ７ｕｐＢ割り込み
                        XINT_SIO        ＳＩＯ割り込み

戻り値
        なし

備考
        指定デバイスの割り込みハンドラを非アクティブにする

変更するグローバル変数
        なし

参照するグローバル変数
        なし

------------------------------------------------------------------------
割り込みハンドラに登録されているルーチンを削除する

void IrqDelete(char cDevNumber)
char cDevNumber;                /* 割り込みを削除したいデバイスの番号 */

パラメータ
        char cDevNumber
                デバイス番号
                        XINT_TIM        タイマー割り込み
                        XINT_EX         拡張割り込み
                        XINT_KP         Ｋポート割り込み
                        XINT_7A         ７ｕｐＡ割り込み
                        XINT_72         ＫＩＮＧ割り込み
                        XINT_7B         ７ｕｐＢ割り込み
                        XINT_SIO        ＳＩＯ割り込み

戻り値
        なし

備考
        指定デバイスの割り込みハンドラをダミールーチンにする

変更するグローバル変数
        なし

参照するグローバル変数
        なし

------------------------------------------------------------------------
ラスター割り込み処理ルーチンを初期化する

void RasterInit(void)

パラメータ
        なし

戻り値
        なし

備考
        ラスタールーチンを非アクティブにしVsync処理ルーチンを２６１ラスタ
        目に登録、ラスター割り込み処理ルーチンをＫＩＮＧの割り込み処理に
        登録する

変更するグローバル変数
        char        __cActiveRaster[]
        vfunc_t        __vUserRoutin[]
        int        __iRasterCounter
        
参照するグローバル変数
        なし

------------------------------------------------------------------------
ラスター処理ルーチン

void interrupt RasterInt(void)

パラメータ
        なし

戻り値
        なし

備考
        登録されたラスター割り込みルーチン駆動部

変更するグローバル変数
        int        __iRasterCounter

参照するグローバル変数
        vfunc_t        __vUserRoutin[]
                登録された割り込みルーチンへのポインタ
        char        __cActiveRaster[]
                アクティブ／非アクティブの判定用
        int        __iRasterCounter
                ラスター番号取得用

------------------------------------------------------------------------
ラスター割り込みルーチンを登録する

int RasterSet(int iRasterNumber, vfunc_t vFunction)
int iRasterNumber;                /* 登録したいラスター番号 */
vfunc_t vFunction;                /* 登録したいルーチンへのポインタ */

パラメータ
        int iRasterNumber
                登録したいラスター番号（０〜２６０）
        
        vfunc_t vFunction;
                登録したいルーチンへのポインタ
                (interrupt 型は登録しないでください）

戻り値
        既に登録されていた場合          -1
        正常に終了した場合              0

備考
        指定したラスター番号の割り込みに関数を登録する
        登録したルーチンはアクティブにならない

変更するグローバル変数
        vfunc_t __vUserRoutin[]
                登録する割り込みルーチンへのポインタの保存用

参照するグローバル変数
        char __cActiveRaster[]
                登録したラスター番号に既に登録されているかどうかの判定

------------------------------------------------------------------------
ラスター割り込みルーチンを登録しアクティブにする

int RasterSetOn(int iRasterNumber, vfunc_t vFunction)
int iRasterNumber;                /* 登録したいラスター番号 */
vfunc_t vFunction;                /* 登録したいルーチンへのポインタ */

パラメータ
        int iRasterNumber
                登録したいラスター番号（０〜２６０）
        
        vfunc_t vFunction;
                登録したいルーチンへのポインタ
                (interrupt 型は登録しないでください）

戻り値
        既に登録されていた場合          -1
        正常に終了した場合              0

備考
        指定したラスター番号の割り込みに関数を登録する
        関数を登録後アクティブにする

変更するグローバル変数
        vfunc_t __vUserRoutin[]
                登録する割り込みルーチンへのポインタの保存用
        char    __cActiveRaster[]
                登録するラスター番号をアクティブにする

参照するグローバル変数
        char __cActiveRaster[]
                登録したラスター番号に既に登録されているかどうかの判定

------------------------------------------------------------------------
指定したラスター割り込みルーチンをアクティブにする

void RasterOn(int iRasterNumber)
int iRasterNumber;                /* アクティブにしたいラスター番号 */

パラメータ
        int iRasterNumber
                アクティブにしたいラスター番号

戻り値
        なし

備考
        指定したラスター番号に登録されているルーチンをアクティブにする
        登録されていない場合は、ダミールーチンがアクティブになる

変更するグローバル変数
        char        __cActiveRaster[]
                指定ラスター番号をアクティブにする

参照するグローバル変数
        なし

------------------------------------------------------------------------
指定したラスター割り込みルーチンを非アクティブにする

void RasterOff(int iRasterNumber)
int iRasterNumber;                /* 非アクティブにしたいラスター番号 */

パラメータ
        int iRasterNumber
                非アクティブにしたいラスター番号

戻り値
        なし

備考
        指定したラスター番号に登録されているルーチンを非アクティブにする
        ルーチンの削除は行わない

変更するグローバル変数
        char        __cActiveRaster[]
                指定ラスター番号を非アクティブにする

参照するグローバル変数
        なし

------------------------------------------------------------------------
指定したラスター割り込みルーチンを削除する

void RasterUnset(int iRasterNumber)
int iRasterNumber;                /* 削除したいラスター番号 */

パラメータ
        int iRasterNumber
                削除したいラスター割り込みルーチンのラスター番号

戻り値
        なし

備考
        指定したラスター番号に登録されているルーチンにダミールーチンを
        登録し、非アクティブにする

変更するグローバル変数
        vfunc_t        __vUserRoutin[]
                削除するラスター番号のルーチンを削除
        char        __cActiveRaster[]
                削除するラスター番号を非アクティブにする

参照するグローバル変数
        なし

------------------------------------------------------------------------
指定したラスター割り込みルーチンに指定ルーチンを上書きする

void RasterOverride(int iRasterNumber, vfunc_t vFunction)
int iRasterNumber;                /* 上書きしたいラスター番号 */
vfunc_t vFunction;                /* 上書きしたいルーチン */

パラメータ
        int iRasterNumber
                上書きしたいラスター番号
        
        vfunc_t vFunction
                上書きしたいルーチンへのポインタ
                (interrupt型は登録しないでください)

戻り値
        なし

備考
        指定したラスター番号の割り込みルーチン指定したルーチンを上書き
        する。また上書きしただけではアクティブにならない

変更するグローバル変数
        vfunc_t __vUserRoutin[]
                上書きするラスター番号のルーチンを変更

参照するグローバル変数
        char __cActiveRaster[]
                上書きするラスター番号を非アクティブにする
                
------------------------------------------------------------------------
割り込み時のラスター番号を取得する

int RasterGet(void)

パラメータ
        なし

戻り値
        最後にかかった割り込みのラスター番号

備考
        割り込みルーチンが登録されていないラスター番号は返ってこない。
        ラスター割り込みルーチン以外で使用しても無意味。

変更するグローバル変数
        なし

参照するグローバル変数
        int  __iOldRaster
                戻り値に使用
                
------------------------------------------------------------------------
６０分の１割り込みルーチン

void VSyncInt(void)

パラメータ
        なし
        
戻り値
        なし

備考
        ６０分の１秒単位でカウンタを増加させ、ユーザー関数が登録されて
        いれば呼出す。

変更するグローバル変数
        unsigned long __ulSyncCounter

参照するグローバル変数
        char __cActiveVsync
                ６０分の１割り込みユーザー関数がアクティブかどうかの判定
        vfunc_t vUserSync
                ユーザー関数へのポインタ

------------------------------------------------------------------------
６０分の１割り込みルーチンに登録されているユーザールーチンを非アクティブ
にする

void VSyncUnset(void)

パラメータ
        なし

戻り値
        なし
        
備考
        ６０分の１割り込みのユーザールーチンを非アクティブにする

変更するグローバル変数
        char __cActiveVsync
                非アクティブにする

参照するグローバル変数
        なし

------------------------------------------------------------------------
６０分の１割り込みルーチンにユーザールーチンを登録する

int  VSyncSet(void)

パラメータ
        なし

戻り値
        既に登録されていた場合          -1
        正常に終了した場合              0

備考
        ６０分の１割り込みにユーザールーチンを追加する

変更するグローバル変数
        vfunc_t vUserVSync
                ユーザールーチンへのポインタ
        char    __cActiveVsync
                アクティブにする

参照するグローバル変数
        char __cActiveVsync
                既にアクティブかどうかの判定

------------------------------------------------------------------------
６０分の１秒待つ

void VSyncWait(void)

パラメータ
        なし

戻り値
        なし

備考
        ６０分の１秒待つ
        VSyncIntを動作させておいてください。

変更するグローバル変数
        なし

参照するグローバル変数
        unsigned long __ulSyncCounter
                ６０分の１秒待つために使用

------------------------------------------------------------------------
